package com.xxg.renrensearch.util;

import java.util.ArrayList;
import java.util.List;

/**
 * 类型转换工具
 *
 * @author xxg
 * @date 2020-09-28
 */
public class ConvertUtil {
    /**
     * Object转List
     *
     * @param obj   对象
     * @param clazz 元素类型
     * @param <T>   泛型
     * @return 数组
     */
    public static <T> List<T> castList(Object obj, Class<T> clazz) {
        List<T> result = new ArrayList<>();
        if (obj instanceof List<?>) {
            for (Object o : (List<?>) obj) {
                result.add(clazz.cast(o));
            }
            return result;
        }
        return null;
    }

    /**
     * list 转 list
     *
     * @param list  原列表
     * @param clazz 目标类型
     * @param <T>   范型
     * @return 结果
     */
    public static <T> List<T> castList(List<?> list, Class<T> clazz) {
        List<T> result = new ArrayList<>(list.size());
        for (Object o : list) {
            result.add(clazz.cast(o));
        }
        return result;
    }

    /**
     * 数组转换
     *
     * @param o 对象
     * @return 新数组
     */
    public static List<String> castList(List<Object> o) {
        final List<String> strings = new ArrayList<>(o.size());
        o.forEach(obj -> strings.add(obj.toString()));
        return strings;
    }
}
